도커 이미지 설치 및 실행

저자는 데이터 분석 환경을 쉽게 설치할 수 있도록 R와 파이썬 등 데이터 분석에 필요한 모든 소프트웨어를 설치한 리눅스 환경을 datascienceschool/rpython 라는 이름의 도커 이미지로 만들어 도커 허브(docker hub)라고 하는 웹사이트에 올려놓았다.

datascienceschool/rpython은 리눅스 환경에서 R 혹은 파이썬을 사용하여 데이터 분석을 하는데 필요한 모든 소프트웨어 요소들을 포함하고 있기 때문에 별도의 복잡한 설치 과정 없이 바로 데이터 분석을 시작할 수 있다.

도커 이미지 다운로드

datascienceschool/rpython 도커 이미지를 다운로드 받아서 설치해가 위해서는 우선 도커 툴박스를 설치하고 도커 퀵스타트 터미널(Docker Quickstart Terminal, 이하 도커 터미널로 부른다.)을 실행해야 한다.

도커 툴박스가 정상적으로 설치된 경우, 도커 터미널을 실행하면 다음과 같은 화면이 뜰 것이다.

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com


user@PC MINGW64 ~
$

이 화면에서 다음과 같이 입력한다. 이 때 가장 앞의 달러표시($)는 터미널의 프롬프트(prompt)를 뜻하는 것으로 사용자가 입력하는 것이 아니다.

$ docker pull datascienceschool/rpython:latest

이 명령을 실행하면 도커 이미지를 다운로드 받기 시작한다. 네트워크 상태에 따라 다운로드에 약 10분 ~ 20분이 소요될 수 있다. 다음과 같은 화면이 나타나면 다운로드가 완료된 것이다.

그림: 도커 이미지 다운로드 화면

이미지를 정상적으로 다운로드 하였는지 확인하기 위해 다음과 같이 docker images 명령으로 현재 존재하는 도커 이미지 목록을 출력한다.

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED              SIZE
datascienceschool/rpython   latest              ce2aabd3c3d0        1 minutes ago        11.54 GB

목록에 datascienceschool/rpython 가 나타났다면 정상적으로 다운로드 된 것이다. 도커 이미지 다운로드 후의 전체 모습은 다음과 같다.

그림: 도커 이미지 다운로드 후의 상태

datascienceschool/rpython 컨테이너 실행

이제 분석 환경을 담고 있는 datascienceschool/rpython 이미지를 실행해 보자. 다음 명령을 실행한다. (마찬가지로 달러 기호까지는 프롬프트 부분이므로 사용자가 입력하는 부분이 아니다. 달러 기호 뒤의 명령어를 입력한다.)

$ docker run -Pit --name rpython -p 8888:8888 -p 8787:8787 -p 6006:6006 -p 8022:22 datascienceschool/rpython

위 명령의 의미는 다음과 같다.

  • docker run
    • 도커 컨테이너를 최초로 실행하는 명령
  • -Pit 옵션
    • 컨테이너에서 사용하는 모든 네트워크 포트(port)를 외부로 개방하고 셸을 사용하기 위한 옵션
  • -p 옵션
    • 컨테이너 내부의 포트를 호스트 컴퓨터로 열어준다. 포트는 일단 run 명령을 실행할 때만 열 수 있기 때문에 앞으로 사용할 포트는 미리 열어주어야 한다.
    • 여기에서는 8888, 8787, 6006 포트는 같은 포트 번호로 열었고 22 포트는 8022 로 변경하여 열었다. 따라서 호스트에서는 8022번을 접속하면 컨테이너에서는 22번 포트가 접속된 것으로 인식한다.
    • 각각의 포트는 다음 프로그램을 사용하기 위한 것이다. 접속 방법에 대해서는 이후에 자세히 설명한다.
      • 8888: 주피터 노트북
      • 8787: RStudio
      • 6006: 텐서 플로우의 텐서 보드
      • 22: ssh 서비스

정상적으로 동작하면 프롬프트가 다음과 같이 바뀌는 것을 볼 수 있다. 여기에서 dockeruser 는 도커 컨테이너안의 사용자 이름이고 306d4d3d002b는 도커 컨테이너 이름이다. 컨테이너 이름은 사용할 때마다 계속 달라질 수 있다.

dockeruser@306d4d3d002b:~$

만약 위의 명령을 실행했는데 다음과 같은 오류 메세지가 나온다면 이미 docker run 을 한 번 실행했기 때문이다.

Error response from daemon: Conflict. The name "/rpython" is already in use by container

이 경우에는 docker start rpython 을 실행해야 한다. 도커 명령에 대한 자세한 설명은 다음 절에 나온다.

그림: 도커 컨테이너 실행 이후의 상태

자 이제 다시 정리해 보자. 여기가지 제대로 따라왔다면 여러분은

  • 여러분 실제 컴퓨터의 윈도우즈 운영체제 (호스트) 안의
  • Oracle VM VirtualBox 가상 머신의 boot2docker 운영체제 (가상 머신) 안의
  • 도커 datascienceschool/rpython 컨테이너의 우분투 리눅스 운영체제 (도커 컨테이너) 안으로

들어온 것이다.

Jupyter Notebook 사용

이제 컨테이서에서 ps 명령을 실행하여 이 컨테이너 안에서 무슨 프로세스가 가동되고 있는지 살펴보자.

dockeruser@306d4d3d002b:~$ ps x
PID TTY      STAT   TIME COMMAND
 16 ?        Sl     0:24 /home/dockeruser/anaconda2/bin/python /home/dockeruser/anaconda2/bin/jupyter-notebook --port=8888 --no-browser --ip=0.0.0.0
 17 ?        Sl     0:00 /usr/lib/rstudio-server/bin/rserver
 61 ?        S      0:00 /bin/bash
468 ?        R+     0:00 ps x

위 프로세스 목록에서 jupyter-notebook 이란 이름의 프로세스가 돌아가고 있는 것을 볼 수 있다. 우리가 분석에 사용하고자 하는 것이 바로 이 주피터 노트북이다.

주피터 노트북은 웹 브라우저에서 R 또는 파이썬 등을 실행 시킬 수 있는 다중 언어 실행 환경이다. 주피터 노트북을 사용하려면 호스트 컴퓨터(윈도우즈나 매킨토시)에서 웹 브라우저를 띄운 다음 주소창에 다음 주소를 입력한다

만약 자신의 컴퓨터에서 만들어진 가상 머신의 IP 주소가 192.168.99.100 이 아닌 경우에는 해당 주소를 사용해야 한다.

정상적으로 작동한다면 다음과 같이 주피터 노트북 홈페이지가 나타난다.

그림: 주피터 노트북 실행 화면

R과 RStudio 사용

datascienceschool/rpython 컨테이너 안에는 R과 대부분의 통계 분석용 R 패키지들이 이미 설치되어 있으므로 사용자가 따로 설치할 필요가 없다. 또한 RStudio(서버 버전)라고 하는 R용 통합 개발 환경도 설치되어 있다. RStudio를 실행하려면 호스트(윈도우즈나 매킨토시)에서 웹 브라우저를 시작하고 다음 주소를 입력한다

정상적으로 작동한다면 다음과 같이 RStudio 로그인 화면이 나타난다.

그림: RStudio 로그인 화면

로그인 화면에서 다음 정보를 입력하여 로그인한다. 이 로그인 정보는 datascienceschool/rpython 컨테이너 생성시에 고정된 것이므로 바꿀 수 없다.

  • Username : dockeruser
  • Password : dockeruserpass

정상적으로 로그인하면 다음과 같은 RStudio 화면이 나타난다. 이 상태에서 R을 사용하면 된다.

그림: RStudio 실행 화면

샘플 데이터 다운로드

datascienceschoo/rpython 컨테이너에는 데이터 분석에 관한 다양한 샘플 데이터를 다운로드 받을 수 있는 스크립트가 있다. 이 스크립트를 실행하여 데이터를 다운로드 받으려면 rpython 도커 컨테이너 내에서 다음과 같이 실행한다.

dockeruser@306d4d3d002b:~$ cd data
dockeruser@306d4d3d002b:~$ source ./download_data.sh